package com.javaee.ex05.proxy;

import com.javaee.ex05.Calculator;

public class CalculatorProxy implements Calculator {
    // 想要被代理的对象
    private Calculator target;
    // 有参数的构造方法，用于初始化被代理对象
    public CalculatorProxy(Calculator calculator) {
        this.target = calculator;
    }

    @Override
    public int add(int i, int j) {
        // 核心业务开始之前，输出日志信息
        System.out.println("【静态代理】【日志】add方法开始了， 参数是：" + i + "," + j);
        // 调用被代理的对象目标方法完成核心业务
        int result = target.add(i, j);
        // 核心业务结束之后，输出日志信息
        System.out.println("【静态代理】【日志】add方法结束了， 结果是：" + result);
        return result;
    }

    @Override
    public int sub(int i, int j) {
        // 核心业务开始之前，输出日志信息
        System.out.println("【静态代理】【日志】sub方法开始了， 参数是：" + i + "," + j);
        // 调用被代理的对象目标方法完成核心业务
        int result = target.add(i, j);
        // 核心业务结束之后，输出日志信息
        System.out.println("【静态代理】【日志】sub方法结束了， 结果是：" + result);
        return result;
    }

    @Override
    public int mul(int i, int j) {
        // 核心业务开始之前，输出日志信息
        System.out.println("【静态代理】【日志】mul方法开始了， 参数是：" + i + "," + j);
        // 调用被代理的对象目标方法完成核心业务
        int result = target.add(i, j);
        // 核心业务结束之后，输出日志信息
        System.out.println("【静态代理】【日志】mul方法结束了， 结果是：" + result);
        return result;
    }

    @Override
    public int div(int i, int j) {
        // 核心业务开始之前，输出日志信息
        System.out.println("【静态代理】【日志】div方法开始了， 参数是：" + i + "," + j);
        // 调用被代理的对象目标方法完成核心业务
        int result = target.add(i, j);
        // 核心业务结束之后，输出日志信息
        System.out.println("【静态代理】【日志】div方法结束了， 结果是：" + result);
        return result;
    }
}
